/*************************************************
 * HISTORY:                                      *
 *	11/22/2020 pyx : Created.                    *
 *	06/01/2022 pyx : Edited.                     *
=================================================*/

#ifndef DA_TYPE_H
#define DA_TYPE_H

enum RefType : int
{
    RT_Declaration,
    RT_DefinedTest, // macro
    RT_Definition,  // macro
    RT_Expansion,   // macro
    RT_Included,    // macro
    RT_Qualifier,
    RT_Reference,
    RT_Undefinition, // macro
    RT_Max
};

enum SymbolType : int
{
    ST_Enum,
    ST_Enumerator,
    ST_Field, // struct/union/class member
    ST_Function,
    ST_GlobalVariable,
    ST_LocalVariable,
    ST_Macro,
    ST_Method, // NOT USE
    ST_Parameter,
    ST_Path,
    ST_Struct,
    ST_Typedef,
    ST_Union,
    ST_Max
};

enum SDependencyType : int
{
    // SDT_A_B means B has a dependency on A (B-->A)
    SDT_Func_Function, // exclude static function call static function
    SDT_RetType_Function,
    SDT_ParamType_Function,
    SDT_Type_Parameter,
    SDT_Type_Variable,
    SDT_Type_Struct,
    SDT_Type_Typedef,
    SDT_Type_Union,
    SDT_Symbol_Marco,        // can be split //TODO
    SDT_GlobalVar_GlobalVar, // not static var,TODO:gv1 = (gv2 = gv3+b)?is it necessary to add gv1--->gv2&gv3?
    SDT_GlobalVar_Function,  // function needs gv, because func call uses a gv as input param(TODO) or func uses a gv in its body
    SDT_Max
};

#endif // DA_TYPE_H
